package common

//定义client平台用到数据结构
type CtUser struct {
	Uid         int64  `json:"uid" orm:"column(uid)"`
	Phone       string `json:"phone" orm:"column(phone)"` //方面查询
	Nickname    string `json:"nickname" orm:"column(nickname)"`
	Sex         int64  `json:"sex" orm:"column(sex)"` // 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
	RTime       int64  `json:"rtime" orm:"column(rtime)"`
	LoginTime   int64  `json:"logintime" orm:"column(logintime)"`
	OfflineTime int64  `json:"offlinetime" orm:"column(offlinetime)"`
	CLogin      int64  `json:"clogin" orm:"column(clogin)"`
	WeekLogin   int64  `json:"weeklogin" orm:"column(weeklogin)"`
	AllLogin    int64  `json:"alllogin" orm:"column(alllogin)"`
	Reward      string `json:"reward" orm:"column(reward)"`
	Bankrupt    int64  `json:"bankrupt" orm:"column(bankrupt)"`
	//Setting      string `json:"setting" orm:"column(setting)"`
	SafePwd string `json:"safepwd" orm:"column(safepwd)"`
	//PayAll       int64  `json:"payall" orm:"column(payall)"`
	//PayTimes     int64  `json:"paytimes" orm:"column(paytimes)"`
	//LPayTime     int64  `json:"lpaytime" orm:"column(lpaytime)"`
	LoginIp  string `json:"loginip" orm:"column(loginip)"`
	ImageUrl string `json:"imageurl" orm:"column(imageurl)"`
	//DeviceId     string `json:"deviceid" orm:"column(deviceid)"`
	//LDeviceId    string `json:"ldeviceid" orm:"column(ldeviceid)"`
	LVersionId   string `json:"lversionid" orm:"column(lversionid)"`
	Model        string `json:"model" orm:"column(model)"`
	Frozen       int64  `json:"frozen" orm:"column(frozen)"`
	FrozenReason string `json:"frozen_reason" orm:"column(frozen_reason)"`
	EFid         int64  `json:"efid" orm:"column(efid)"`
	RmCard       int64  `json:"rmcard" orm:"column(rmcard)"`
	Coin         int64  `json:"coin" orm:"column(coin)"`
	Vip          int64  `json:"vip" orm:"column(vip)"` //vip等级，0,1,2,3,4.......
	SafeCoin     int64  `json:"safecoin" orm:"column(safecoin)"`
}

// 对外信息
type UserFace struct {
	Uid       int64   `json:"uid" orm:"column(uid)"`
	Nickname  string  `json:"nickname" orm:"column(nickname)"`
	Sex       int64   `json:"sex" orm:"column(sex)"` // 用户的性别，值为1时是男性，值为2时是女性，值为0时是未知
	LoginIp   string  `json:"loginip" orm:"column(loginip)"`
	ImageUrl  string  `json:"imageurl" orm:"column(imageurl)"`
	Lon       float64 `json:"lon" orm:"column(lon)"`
	Lat       float64 `json:"lat" orm:"column(lat)"`
	CityCode  int64   `json:"city_code"` //玩家在的城市编码
	Phone     string  `json:"phone"`
	RealName  string  `json:"real_name"`
	Identity  string  `json:"identity"`
	Vip       int64   `json:"vip"`       //用户等级
	LoginTime int64   `json:"logintime"` //用户登录时间
}

type Passport struct {
	Uid         int64  `json:"uid" orm:"column(uid)"`
	Phone       string `json:"phone" orm:"column(phone)"`
	Password    string `json:"password" orm:"column(password)"`
	Email       string `json:"email" orm:"column(email)"`
	Name        string `json:"name" orm:"column(name)"`
	Type        int64  `json:"type" orm:"column(type)"` //注册类型（0手机1邮箱2微信3qq）
	UnionId     string `json:"union_id" orm:"column(union_id)"`
	OpenId      string `json:"open_id" orm:"column(open_id)"`
	AccessToken string `json:"access_token" orm:"column(access_token)"`
	SiteId      int64  `json:"site_id" orm:"column(site_id)"`
}

//玩家与渠道(代理)的关系
type AgentPlayerRelation struct {
	Id        int64  `json:"id"`
	AgentUid  int64  `json:"agent_uid"`
	PlayerUid int64  `json:"player_uid"`
	UnionId   string `json:"union_id"`
}

//玩家绑定手机记录
type PhoneLog struct {
	Id         int64  `json:"id"`
	Uid        int64  `json:"uid"`
	Phone      string `json:"phone"`
	CreateTime int64  `json:"create_time"`
}

//客户端上报的错误日志 数据库表:client_error
type Error struct {
	Id         int64  `json:"id"`
	Uid        int64  `json:"uid"`
	ErrorTime  int64  `json:"error_time"`
	Msg        string `json:"msg"`
	Ip         string `json:"ip"`
	DeviceId   string `json:"device_id"`
	Model      string `json:"model"`
	VersionId  string `json:"version_id"`
	HotVersion string `json:"hot_version"`
}

//客户端上报的错误日志 数据库表:client_error
type ErrorLog struct {
	Id          int64  `json:"id"`
	Uid         int64  `json:"uid"`
	Msg         string `json:"msg"`
	DeviceId    string `json:"device_id"`
	Model       string `json:"model"`
	Ip          string `json:"ip"`
	AppVersion  string `json:"app_version"`
	GameVersion string `json:"game_version"`
	LogUrl      string `json:"log_url"`
	ErrorTime   int64  `json:"error_time"`
}
type ListErrorLogParams struct {
	ListParams
	Uid         int64  `json:"uid"`
	StartTime   int64  `json:"start_time"`
	EndTime     int64  `json:"end_time"`
	Content     string `json:"content"`
	Model       string `json:"model"`
	AppVersion  string `json:"app_version"`
	GameVersion string `json:"game_version"`
}

type ListErrorParams struct {
	ListParams
	Uid       int64  `json:"uid"`
	StartTime int64  `json:"start_time"`
	EndTime   int64  `json:"end_time"`
	Content   string `json:"content"`
	Model     string `json:"model"`
	VersionId string `json:"version_id"`
	Status    int64  `json:"status"`
}

type ListSubmitLogParams struct {
	ListParams
	Uid       int64  `json:"uid"`
	StartTime int64  `json:"start_time"`
	EndTime   int64  `json:"end_time"`
	Content   string `json:"content"`
	Status    int64  `json:"status"`
	Mod       int64  `json:"mod"`
	DeviceId  string `json:"device_id"`
}

// 亲友圈信息
type Club struct {
	Id       int64  `json:"id"`
	Name     string `json:"name"`
	HostId   int64  `json:"host_id"`
	Password int64  `json:"password"`

	IsAudit    int64 `json:"is_audit"` //是否需要审核加入亲友圈
	IsOpen     int64 `json:"is_open"`  //是否公开战绩
	Status     int64 `json:"status"`
	TableNum   int64 `json:"table_num"` //能开多少张桌子
	CreateTime int64 `json:"create_time,omitempty"`
	ModifyTime int64 `json:"modify_time,omitempty"`      //修改亲友圈名字的时间，每天只能修改一次
	Member     int64 `json:"total_player_num,omitempty"` //亲友圈成员总数
}

//房间桌子 对应的是 proom表
type Table struct {
	GameType int `json:"gametype" orm:"column(gametype)"`
	PlayType int `json:"playtype" orm:"column(playtype)"`
}

//房间钻石配置 对应的是roomcardcfg表
type RoomCard struct {
	Id       int64 `json:"id,omitempty"`
	GameType int64 `json:"game_type,omitempty"`
	PlayType int64 `json:"play_type,omitempty"`
	Idx      int64 `json:"idx"`
	Round    int64 `json:"round"`
	Card     int64 `json:"card"`
	CardAa   int64 `json:"card_aa"`
}

//游戏服务器的配置
type Server struct {
	SvrId       int64  `json:"svrid" orm:"column(svrid)"`
	Name        string `json:"name" orm:"column(name)"`
	Group       int64  `json:"group" orm:"column(group)"`
	SvrType     int64  `json:"svr_type" orm:"column(svr_type)"`
	GameType    int64  `json:"game_type" orm:"column(game_type)"`
	GameSubType int64  `json:"game_subtype" orm:"column(game_subtype)"`
	PlayTypes   string `json:"play_types" orm:"column(play_types)"`
	SvrIp       string `json:"svrip" orm:"column(svrip)"`
	SvrPort     int64  `json:"svrport" orm:"column(svrport)"`
	SvrLanPort  int64  `json:"svrlanport" orm:"column(svrlanport)"`
	PhpPort     int64  `json:"phpport" orm:"column(phpport)"`
	State       int64  `json:"state" orm:"column(state)"`
	Onlines     int64  `json:"onlines" orm:"column(onlines)"`
	RepairState int64  `json:"repair_state" orm:"column(repair_state)"`
	ReportTime  int64  `json:"report_time" orm:"column(report_time)"`
}

//平台服务器的配置
type Platform struct {
	Id           int64  `json:"id"`
	UUID         string `json:"uuid" orm:"column(uuid)"`
	Name         string `json:"name"`
	Type         int64  `json:"type"`
	IP           string `json:"ip" orm:"column(ip)"`
	HttpPort     int    `json:"http_port"`
	AdminPort    int    `json:"admin_port"`
	Status       int64  `json:"status"`
	ExecuteTask  int64  `json:"execute_task"`
	CreateTime   int64  `json:"create_time"`
	ModifyTime   int64  `json:"modify_time"`
	RestartCount int64  `json:"restart_count"`
	StartTime    int64  `json:"start_time"`
	ReportTime   int64  `json:"report_time"`
	Load         int64  `json:"load"`
}

//游戏列表 对应的是game_list表
type GameList struct {
	GameId      int64  `json:"game_id"` //游戏id
	Type        int64  `json:"type"`    //游戏分类,1-麻将,2-扑克,3-字牌,4-其他
	Name        string `json:"name"`
	GameType    int64  `json:"game_type"` //游戏大分类
	PlayType    int64  `json:"play_type"` //游戏小分类
	PackageUrl  string `json:"package_url"`
	Version     string `json:"version"`
	IosVersion  string `json:"ios_version"` //ios大厅版本
	TestVersion string `json:"test_version"`
	AppVersion  string `json:"app_version"`
	LogoUrl     string `json:"logo_url"`
	Main        string `json:"main"`       //主类,我也不知道什么鬼
	Show        int64  `json:"show"`       //1-大厅与亲友圈都显示,2-只在大厅显示，3-只在亲友圈显示
	UserVip     int64  `json:"user_vip"`   //用户等级,只有用户等级高于大于此等级才能看到此游戏
	IsContest   int64  `json:"is_contest"` //此游戏是否可以上下分进行比赛,0-不可上下分, 1-可上下分
	Size        string `json:"size"`       //游戏包大小,5.2M,10.0M
	IsPublish   int64  `json:"is_publish"`
	IsTest      int64  `json:"is_test"` //是否公测版本,0-否,1-是
	PublishTime int64  `json:"publish_time"`
	ModifyTime  int64  `json:"modify_time"`

	RoomRule interface{} `json:"room_rule"` //房间收费规则
}

//APP版本记录
type APP struct {
	Id          int64  `json:"id"`
	Type        int64  `json:"type"`
	DownloadUrl string `json:"download_url"`
	ChangeLog   string `json:"change_log"`
	Version     string `json:"version"`
	Status      int64  `json:"status"`
	ModifyTime  int64  `json:"modify_time"`
	CreateTime  int64  `json:"create_time"`
}

//游戏规则 game_rule表
type GameRule struct {
	Id         int64       `json:"id"`
	Pid        int64       `json:"pid,omitempty"`
	GameId     int64       `json:"game_id,omitempty"`
	ShowName   string      `json:"show_name"`
	SelectType int64       `json:"select_type,omitempty"`
	Type       int64       `json:"type"`
	Name       string      `json:"name"`
	Value      int64       `json:"value"`
	IsDefault  int64       `json:"is_default"`
	Child      []*GameRule `json:"child,omitempty"`
}

type AreaGameList struct {
	Id           int64 `json:"id"`
	CityCode     int64 `json:"city_code"`
	DistrictCode int64 `json:"district_code"`
	Position     int64 `json:"position"`
	GameId       int64 `json:"game_id"` //对应的game_list的game_id
}

type ServerLobby struct {
	Svrid    int    `json:"svrid"`
	Svrip    string `json:"svrip"`
	Svrport  int    `json:"svrport"`
	Phpport  int    `json:"phpport"`
	Onlines  int    `json:"onlines"`
	Svrlanip string `json:"svrlanip"`
}

// 测试发牌专用的 card_test_cfg表
type CardTest struct {
	Id       int64  `json:"id"`
	GameType int64  `json:"game_type"`
	PlayType int64  `json:"play_type"`
	Cards    string `json:"cards"`
	Remark   string `json:"remark"`
	Status   int64  `json:"status" valid:"Range(0,1)"`
}

//系统配置
type SystemConf struct {
	Id         int64  `json:"id"`
	Sckey      string `json:"sckey"`
	Value      string `json:"value"`
	Mean       string `json:"mean"`
	ValueType  string `json:"value_type"`
	ModifyTime int64  `json:"modify_time"`
	CreateTime int64  `json:"create_time"`
}

// 用户邮件
type Email struct {
	Eid         int64  `json:"eid" orm:"column(eid)"`           //邮件id
	Type        int64  `json:"type" orm:"column(type)"`         //消息类型(1系统消息2兑换通知,3支付通知,4好友邮件)
	SUid        int64  `json:"suid" orm:"column(suid)"`         //发送者id
	Nickname    string `json:"nickname" orm:"column(nickname)"` //
	RUid        int64  `json:"ruid" orm:"column(ruid)"`
	Title       string `json:"title" orm:"column(title)"`
	Content     string `json:"content" orm:"column(content)"`
	Attachment  string `json:"attachment" orm:"column(attachment)"`
	Status      int64  `json:"status" orm:"column(status)"`
	IsGet       int64  `json:"is_get" orm:"column(is_get)"`
	SendTime    int64  `json:"send_time" orm:"column(send_time)"`
	OperateType int64  `json:"operate_type" orm:"column(operate_type)"`
	Mutable     int64  `json:"mutable"` //是否可编辑,1-可编辑,0-不可编辑
}

// 全局邮件
type EmailFull struct {
	EFid          int64  `json:"efid" orm:"column(efid)"`
	Title         string `json:"title" orm:"column(title)"`
	Content       string `json:"content" orm:"column(content)"`
	Attachment    string `json:"attachment" orm:"column(attachment)"`
	Nickname      string `json:"nickname" orm:"column(nickname)"`
	PTime         int64  `json:"ptime" orm:"column(ptime)"`
	ExpireTime    int64  `json:"expiretime" orm:"column(expiretime)"`
	PublishStatus int64  `json:"publish_status,omitempty"` //发布状态:// 1-未启用,2-启用中,3-已过期
	Status        int64  `json:"status" orm:"column(status)"`
}

// 游戏招募代理公告 对应的agent_notice表
type AgentNotice struct {
	Id         int64  `json:"id,omitempty"`
	GameId     int64  `json:"game_id,omitempty" valid:"Required"`
	Content    string `json:"content"`
	ModifyTime int64  `json:"modify_time,omitempty"`
	CreateTime int64  `json:"create_time,omitempty"`
}

//子游戏大厅里的游戏活动公告
type GameNotice struct {
	Id            int64  `json:"id,omitempty"`
	GameId        int64  `json:"game_id"`
	GameName      string `json:"game_name"`
	Title         string `json:"title"`
	Content       string `json:"content"`
	NoticeUrl     string `json:"notice_url"`
	DetailUrl     string `json:"detail_url"`
	Status        int64  `json:"status"`                   //此公告的状态(0正常,1下架)
	PublishStatus int64  `json:"publish_status,omitempty"` // 1-未启用,2-启用中,3-已过期
	PublishTime   int64  `json:"publish_time,omitempty"`
	ExpireTime    int64  `json:"expire_time,omitempty"`
	ModifyTime    int64  `json:"modify_time,omitempty"`
	CreateTime    int64  `json:"create_time,omitempty"`
}

//h5公告 h5_notice表
type H5Notice struct {
	Id          int64  `json:"id,omitempty"`
	Title       string `json:"title"`
	Content     string `json:"content"`
	PublishTime int64  `json:"publish_time,omitempty"`
	ModifyTime  int64  `json:"modify_time,omitempty"`
	CreateTime  int64  `json:"create_time,omitempty"`
}

//活动公告（系统公告，活动公告)
type ActivityNotice struct {
	Id            int64  `json:"id,omitempty"`
	Type          int64  `json:"type"`
	Title         string `json:"title"`
	NoticeUrl     string `json:"notice_url"`
	DetailUrl     string `json:"detail_url"`
	Content       string `json:"content"`
	ShowNow       int64  `json:"show_now"`
	Status        int64  `json:"status"`                   //此公告的状态(0正常,1下架)
	PublishStatus int64  `json:"publish_status,omitempty"` // 1-未启用,2-启用中,3-已过期
	PublishTime   int64  `json:"publish_time,omitempty"`
	ExpireTime    int64  `json:"expire_time,omitempty"`
	ModifyTime    int64  `json:"modify_time,omitempty"`
	CreateTime    int64  `json:"create_time,omitempty"`
}

type OtherConf struct {
	Id    int64  `json:"id" valid:"Required"`
	Type  int64  `json:"type" valid:"Range(2,5)"`
	Name  string `json:"name"`
	Value string `json:"value"`
	Url   string `json:"url"`
}

type Horse struct {
	Id            int64  `json:"id,omitempty"`
	Type          int64  `json:"type,omitempty" valid:"Range(1,3)"` //跑马灯类型,1-游戏客户端, 2-代理助手, 3-合伙人系统
	Content       string `json:"content"`
	Time          int64  `json:"time"` //滚动显示次数
	PublishTime   int64  `json:"publish_time,omitempty"`
	PublishStatus int64  `json:"publish_status,omitempty"`
	ExpireTime    int64  `json:"expire_time,omitempty"`
	ModifyTime    int64  `json:"modify_time,omitempty"`
	CreateTime    int64  `json:"create_time,omitempty"`
}

//app订单支付方面
type AppOrder struct {
	Id            int64  `json:"id,omitempty"`
	PayType       int64  `json:"pay_type,omitempty"`
	Uid           int64  `json:"uid,omitempty"`
	TransactionId string `json:"transaction_id"` //苹果,微信支付订单号
	Num           int64  `json:"num,omitempty"`
	Amount        int64  `json:"amount,omitempty"`
	Status        int64  `json:"status,omitempty"`
	OrderTime     int64  `json:"order_time,omitempty"`
	PayTime       int64  `json:"pay_time,omitempty"`
	DeliveryTime  int64  `json:"delivery_time"` //发货时间
	Remark        string `json:"remark"`
}

//分页的参数
type ListParams struct {
	PageSize  int64 `json:"page_size" valid:"Range(1,100)"`
	PageIndex int64 `json:"page_index" valid:"Required"`
}

//排序的参数
type OrderParams struct {
	OrderName string `json:"order_name"`
	Order     int64  `json:"order"`
}

type ListCtUserParams struct {
	Uid   []int64 `json:"uid"`
	Name  string  `json:"name"`
	Phone string  `json:"phone"`
}

//积分操作记录
type ScoreTrans struct {
	Id          int64 `json:"id"`
	ClubId      int64 `json:"club_id"`
	Uid         int64 `json:"uid"`
	Score       int64 `json:"score"`
	Fee         int64 `json:"fee"`
	OperatorUid int64 `json:"operator_uid"`
	CreateTime  int64 `json:"create_time"`
}

//俱乐部积分
type ClubScore struct {
	Uid        int64 `json:"uid"`
	FrozeScore int64 `json:"froze_score"`
	Score      int64 `json:"score"`
	Fee        int64 `json:"fee"`
	WinNum     int64 `json:"win_num"`
	LoseNum    int64 `json:"lose_num"`
}
